package com.omo.types.enums;

/**
 * 包含A-Z字母及其对应的ASCII码的枚举类
 */
public enum AsciiLetter {
    ASCII_A("A", 65),
    ASCII_B("B", 66),
    ASCII_C("C", 67),
    ASCII_D("D", 68),
    ASCII_E("E", 69),
    ASCII_F("F", 70),
    ASCII_G("G", 71),
    ASCII_H("H", 72),
    ASCII_I("I", 73),
    ASCII_J("J", 74),
    ASCII_K("K", 75),
    ASCII_L("L", 76),
    ASCII_M("M", 77),
    ASCII_N("N", 78),
    ASCII_O("O", 79),
    ASCII_P("P", 80),
    ASCII_Q("Q", 81),
    ASCII_R("R", 82),
    ASCII_S("S", 83),
    ASCII_T("T", 84),
    ASCII_U("U", 85),
    ASCII_V("V", 86),
    ASCII_W("W", 87),
    ASCII_X("X", 88),
    ASCII_Y("Y", 89),
    ASCII_Z("Z", 90);

    private final String letter;
    private final int asciiCode;

    AsciiLetter(String letter, int asciiCode) {
        this.letter = letter;
        this.asciiCode = asciiCode;
    }

    public String getLetter() {
        return letter;
    }

    public int getAsciiCode() {
        return asciiCode;
    }

    /**
     * 根据字母获取对应的枚举实例
     */
    public static AsciiLetter getByLetter(String letter) {
        for (AsciiLetter letterEnum : values()) {
            if (letterEnum.letter.equalsIgnoreCase(letter)) {
                return letterEnum;
            }
        }
        return null;
    }

    /**
     * 根据ASCII码获取对应的枚举实例
     */
    public static AsciiLetter getByAsciiCode(int code) {
        for (AsciiLetter letterEnum : values()) {
            if (letterEnum.asciiCode == code) {
                return letterEnum;
            }
        }
        return null;
    }
}